import { _decorator, Component, Node, Button } from 'cc';
import { GlobalSettings } from './GlobalSettings';
const { ccclass, property } = _decorator;

@ccclass('index')
export class index extends Component {
    // 入口有礼按钮
    @property(Button)
    giftBtn: Button = null;

    // 侧边栏复访面板节点
    @property(Node)
    sliderPanel: Node = null;

    // 去侧边栏按钮
    @property(Button)
    rewardButton: Button = null;

    // 领取奖励按钮
    @property(Button)
    rewardButton1: Button = null;


    //========================================
    //setting设置按钮
    @property(Button)
    settingButton: Button = null;

    //设置面板
    @property(Node)
    settingPanel: Node = null;

    //设置面板-取消按钮
    @property(Button)
    cancleSsettingButton: Button = null;

    // 取消按钮节点
    @property(Button)
    cancelButton: Button = null;

    //侧边栏是否可用: 状态
    private isSidebarAvailable = false;

    //是否从侧边栏进入的
    private isFromSidebar = false;


    //3个控制
    //music控制
    @property(Button)
    musicButton: Button = null;

    @property(Button)
    musicButton1: Button = null;

    //音效
    @property(Button)
    shengyinButton: Button = null;

    @property(Button)
    shengyinButton1: Button = null;

    //震动
    @property(Button)
    zhendongButton: Button = null;

    @property(Button)
    zhendongButton1: Button = null;


    private globalSettings: GlobalSettings;

    //声音，音效，震动  的标记
    // private isMusicEnabled: boolean = true;
    // private isShengyinEnabled: boolean = true;
    // private isZhendongEnabled: boolean = true;

    updateSettingPanelButtons() {
        // 根据 GlobalSettings 中的状态更新设置面板中的按钮显示
        this.musicButton.node.active = this.globalSettings.isMusicEnabled;
        this.musicButton1.node.active =!this.globalSettings.isMusicEnabled;
        this.shengyinButton.node.active = this.globalSettings.isSoundEnabled;
        this.shengyinButton1.node.active =!this.globalSettings.isSoundEnabled;
        this.zhendongButton.node.active = this.globalSettings.isVibrationEnabled;
        this.zhendongButton1.node.active =!this.globalSettings.isVibrationEnabled;
    }

    //点击设置打开设置面板
    onSettingButtonClick() {
        this.settingPanel.active = true;
        this.updateSettingPanelButtons();
    }

    onCancleSettingClick() {
        this.settingPanel.active = false;
    }

    onMusicButtonClick() {
        // 切换音乐状态
        this.globalSettings.isMusicEnabled = !this.globalSettings.isMusicEnabled;

        this.musicButton.node.active = false;
        this.musicButton1.node.active = true;

        if (this.globalSettings.isMusicEnabled) {
            console.log("音乐已开启");
            // 这里可以添加播放音乐的逻辑，例如：
            // this.audioSource.play();
        } else {
            console.log("音乐已关闭");
            // 这里可以添加暂停音乐的逻辑，例如：
            // this.audioSource.pause();
        }
    }

    onMusicButtonClick1() {
        // 切换音乐状态
        this.globalSettings.isMusicEnabled = !this.globalSettings.isMusicEnabled;

        this.musicButton.node.active = true;
        this.musicButton1.node.active = false;

        if (this.globalSettings.isMusicEnabled) {
            console.log("音乐已开启");
            // 这里可以添加播放音乐的逻辑，例如：
            // this.audioSource.play();
        } else {
            console.log("音乐已关闭");
            // 这里可以添加暂停音乐的逻辑，例如：
            // this.audioSource.pause();
        }
    }

    onShengyinButtonClick() {
        // 切换音效状态
        this.globalSettings.isSoundEnabled = !this.globalSettings.isSoundEnabled;

        this.shengyinButton.node.active = false;
        this.shengyinButton1.node.active = true;

        if (this.globalSettings.isSoundEnabled) {
            console.log("音效已开启");
            // 这里可以添加播放音效的逻辑，例如：
            // this.soundEffectSource.play();
        } else {
            console.log("音效已关闭");
            // 这里可以添加暂停音效的逻辑，例如：
            // this.soundEffectSource.pause();
        }
    }

    onShengyinButtonClick1() {
        // 切换音效状态
        this.globalSettings.isSoundEnabled = !this.globalSettings.isSoundEnabled;

        this.shengyinButton.node.active = true;
        this.shengyinButton1.node.active = false;

        if (this.globalSettings.isSoundEnabled) {
            console.log("音效已开启");
            // 这里可以添加播放音效的逻辑，例如：
            // this.soundEffectSource.play();
        } else {
            console.log("音效已关闭");
            // 这里可以添加暂停音效的逻辑，例如：
            // this.soundEffectSource.pause();
        }
    }

    onZhendongButtonClick() {
        // 切换震动状态
        this.globalSettings.isVibrationEnabled = !this.globalSettings.isVibrationEnabled;

        this.zhendongButton.node.active = false;
        this.zhendongButton1.node.active = true;

        if (this.globalSettings.isVibrationEnabled) {
            console.log("震动已开启");
            // 这里可以添加启动震动的逻辑，例如：
            // this.vibrateService.startVibration();
        } else {
            console.log("震动已关闭");
            // 这里可以添加停止震动的逻辑，例如：
            // this.vibrateService.stopVibration();
        }
    }

    onZhendongButtonClick1() {
        // 切换震动状态
        this.globalSettings.isVibrationEnabled = !this.globalSettings.isVibrationEnabled;

        this.zhendongButton.node.active = true;
        this.zhendongButton1.node.active = false;

        if (this.globalSettings.isVibrationEnabled) {
            console.log("震动已开启");
            // 这里可以添加启动震动的逻辑，例如：
            // this.vibrateService.startVibration();
        } else {
            console.log("震动已关闭");
            // 这里可以添加停止震动的逻辑，例如：
            // this.vibrateService.stopVibration();
        }
    }


    start() {
        this.globalSettings = GlobalSettings.getInstance();

        //点击设置打开设置面板,此时 开启音乐musicButton 按钮会显示出来
        this.settingButton.node.on('click', this.onSettingButtonClick, this);
        this.cancleSsettingButton.node.on('click', this.onCancleSettingClick, this);

        //点击切换是否开启音乐
        this.musicButton.node.on('click', this.onMusicButtonClick, this);
        this.musicButton1.node.on('click', this.onMusicButtonClick1, this);
        this.shengyinButton.node.on('click', this.onShengyinButtonClick, this);
        this.shengyinButton1.node.on('click', this.onShengyinButtonClick1, this);
        this.zhendongButton.node.on('click', this.onZhendongButtonClick, this);
        this.zhendongButton1.node.on('click', this.onZhendongButtonClick1, this);

        // 初始化时隐藏侧边栏复访面板
        this.sliderPanel.active = false;


        // --侧边栏按钮判断--//
        tt.onShow((res) => {
            //判断用户是否是从侧边栏进来的
            this.isFromSidebar = (res.launch_from == 'homepage' && res.location == 'sidebar_card')

            if (this.isFromSidebar) {
                this.isFromSidebar = true;
                console.log("从侧边栏进入的");
                //如果是从侧边栏进来的，隐藏“去侧边栏”
            }
            else {
                this.isFromSidebar = false;
                console.log("不是从侧边栏进入的");
                //否则 显示“去侧边栏”按钮
            }
        });

        //侧边栏的：去侧边栏，领取奖励先都不显示
        this.rewardButton.node.active = false;
        this.rewardButton1.node.active = false;


        // 初始化时隐藏侧边栏复访面板  多写一遍，发现一启动还是显示这个面板
        this.sliderPanel.active = false;

        // 为去侧边栏按钮添加点击事件监听器
        this.rewardButton.node.on('click', this.onRewardButtonClick, this);
        this.rewardButton1.node.on('click', this.onRewardButtonClick1, this);

        // 为取消按钮添加点击事件监听器
        this.cancelButton.node.on('click', this.onCancelButtonClick, this);

        // 为入口有礼按钮添加点击事件监听器，并在点击时判断侧边栏是否可用
        this.giftBtn.node.on('click', this.onGiftBtnClick, this);

        // 调用方法判断侧边栏是否可用并更新按钮显示状态
        this.checkSidebarAvailability();
    }

    update(deltaTime: number) {

    }

    onRewardButtonClick() {
        console.log("去侧边栏");
        // 领取奖励后隐藏侧边栏复访面板
        this.sliderPanel.active = false;

        //去侧边栏
        // 抖音小游戏侧边栏跳转逻辑
        tt.navigateToScene({
            scene: "sidebar",
            success: (res) => {
                console.log("navigate to scene success");
                // 跳转成功回调逻辑
            },
            fail: (res) => {
                console.log("navigate to scene fail: ", res);
                // 跳转失败回调逻辑
            },
        });
    }


    onRewardButtonClick1() {
        console.log("领取奖励");
        // 领取奖励后隐藏侧边栏复访面板
        this.sliderPanel.active = false;
    }

    onCancelButtonClick() {
        // 点击取消按钮后隐藏侧边栏复访面板
        this.sliderPanel.active = false;
    }


    onGiftBtnClick() {
        //可以看到入口有礼就说明侧边栏可用，点击则打开侧边栏面板
        this.sliderPanel.active = true;
        console.log("点击入口有礼按钮则打开侧边栏面板")

        //还得判断下用户是否是从侧边栏进入的，
        if (!this.isFromSidebar) {
            //如果不是从侧边栏进入的话，下面按钮显示“去侧边栏”  rewardButton
            this.rewardButton.node.active = true;
            this.rewardButton1.node.active = false;
            console.log("显示：去侧边栏");
        } else {
            // 如果是从侧边栏进入的话，下面按钮显示“领取奖励”
            this.rewardButton.node.active = false;
            this.rewardButton1.node.active = true;
            console.log("显示：领取奖励");
        }
    }


    //在 CocosCreator 中添加抖音里内部方法不能马上调试，而是要打完包再放到抖音开发者工具中测试，遇到报错又改打包测试再改
    checkSidebarAvailability() {
        // 使用 tt.checkScene 方法判断侧边栏是否可用
        tt.checkScene({
            scene: 'sidebar',
            success: (res) => {
                this.isSidebarAvailable = true;
                console.log("this.isSidebarAvailable = true; 侧边栏可用")
                this.giftBtn.node.active = true;
            },
            fail: (res) => {
                this.isSidebarAvailable = false;
                console.log("this.isSidebarAvailable = false;")
                // 隐藏入口有礼按钮
                if (this.giftBtn) {
                    this.giftBtn.node.active = false;
                }
            }
        });
    }
}